/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Modelo.Algoritmos;

import com.dp1.pucp.Modelo.Clases.Maquina;
import java.util.ArrayList;

/**
 *
 * @author WALTER
 */
public class Maquinas {
    public    ArrayList<MaquinaA> maqHorneado = new ArrayList();
    public ArrayList<MaquinaA> maqDecorado = new ArrayList();
    public ArrayList<MaquinaA> maqRellenado = new ArrayList();
    public ArrayList<MaquinaA> maqEmpaquetado = new ArrayList();
    
    public Maquinas (){
    }
    
    public Maquinas( ArrayList<MaquinaA> maq1, ArrayList<MaquinaA> maq2, ArrayList<MaquinaA> maq3, ArrayList<MaquinaA> maq4){
        maqHorneado = maq1;
        maqDecorado = maq2;
        maqRellenado = maq3;
        maqEmpaquetado = maq4;
    }
    
    public Maquinas (ArrayList<Maquina> maquis){
       int i =0; 
       for( i =0;i < maquis.size();i++){
           MaquinaA maq = new MaquinaA(maquis.get(i));
           switch(maq.getTipomaquina()){
               case 1:
                   maqHorneado.add(maq);
                   break;
               case 2:
                   maqDecorado.add(maq);
                   break;
               case 3:
                   maqRellenado.add(maq);
                   break;
               case 4:    
                   maqEmpaquetado.add(maq);
           }
       }
    }
    public Maquinas (Maquinas maquinas){
        int i = 0;
        MaquinaA maq = new MaquinaA();
        for ( i =0;i < maquinas.maqHorneado.size();i++){
              maq = maquinas.maqHorneado.get(i);
              MaquinaA  maquina = new MaquinaA(maq.getIdmaquina(), maq.getTipomaquina(), maq.getEstado());
              this.maqHorneado.add(maquina);
        }
        for( i=0;i < maquinas.maqDecorado.size() ;i++ ){
            maq = maquinas.maqDecorado.get(i);
            MaquinaA  maquina = new MaquinaA(maq.getIdmaquina(), maq.getTipomaquina(), maq.getEstado());
              this.maqDecorado.add(maquina);
        }
        for( i=0; i < maquinas.maqRellenado.size() ;i++ ){
             maq = maquinas.maqRellenado.get(i);
            MaquinaA  maquina = new MaquinaA(maq.getIdmaquina(), maq.getTipomaquina(), maq.getEstado());
              this.maqRellenado.add(maquina);
        }
        for( i=0;i < maquinas.maqEmpaquetado.size() ;i++ ){
             maq = maquinas.maqEmpaquetado.get(i);
            MaquinaA  maquina = new MaquinaA(maq.getIdmaquina(), maq.getTipomaquina(), maq.getEstado());
              this.maqEmpaquetado.add(maquina); 
        }
    }
    
    public boolean maquinanoDisponible( int i){
    
        boolean empty = false;
        switch(i){
            case 1:  empty = maqHorneado.isEmpty();
                    break;                
            case 2:  empty = maqDecorado.isEmpty();
                   break;
            case 3: empty = maqRellenado.isEmpty();
                   break; 
            case 4: empty = maqEmpaquetado.isEmpty();
        }
                return empty;
    }
    
    public boolean maquinasDisponibles(){
        
        if (maqHorneado.isEmpty() && maqDecorado.isEmpty() && maqRellenado.isEmpty() && maqEmpaquetado.isEmpty()) {
            return false;
        }
        else {
            return true;
        }
    }
    
    public MaquinaA getMaqAsig(int i ){
        MaquinaA maquina = new MaquinaA();
        //int id =0 ;
        switch(i){  
            case 1: maquina = maqHorneado.remove(0);
                   // id= maquina.getIdmaquina();
                    break;
            case 2:maquina = maqDecorado.remove(0);
                    //id= maquina.getIdmaquina();
                    break;
                
            case 3:maquina = maqRellenado.remove(0);
                    //id= maquina.getIdmaquina();
                    break;
                
            case 4:maquina = maqEmpaquetado.remove(0);
                    //id= maquina.getIdmaquina();           
        }
        return maquina;
    }
    
     
}
